/**
 * generator: 不能作为构造函数，只能返回generator 生成器对象 
 * yield 只能在 generator内部使用
 */
/* function foo(params) {
  for(let i = 0; i < 3;i++){
    console.log(i)
  }
}
foo() */

// generator 函数后面带 *
function* foo(params) {
  for(let i = 0; i < 3;i++){
    console.log(i)
    yield i
  }
}
console.log(foo())
let f = foo()
console.log(f.next())
console.log(f.next())
console.log(f.next())
console.log(f.next())


function * gen(x) {
  let y = 2 * (yield(x + 1))
  let z = yield(y / 3)
  return x + y + z
}

let g = gen(5)
console.log(g.next())   // 6
console.log(g.next(12)) // 12=yield(x + 1)  y = 24
console.log(g.next(13)) // 13=yield(y / 3)  5 + 24 + 13


/**
 * 求出 7 和 7 倍数
 */
function* get7(x = 1){
  while(true){
    if(x % 7 === 0){
      yield x
    }
    x++
  }
}

let n = get7()
console.log(n.next().value)
console.log(n.next().value)
console.log(n.next().value)
console.log(n.next().value)
console.log(n.next().value)
